The present disclosure relates to a system, a method, a server and a server/client executable computer program which are capable of avoiding conflicts in an update in a distributed development environment where files are updated by multiple clients and the updated files are collected to the server.
It is often the case in large-scale system development that many developers engage in development efforts in a distributed environment. In system development in a distributed environment, multiple clients develop a program while a server performs management of the developed program source code, build management of a target application, bug management and the like. Source code files edited by the clients are regularly collected to the server, and the artifact built from the source code files in the same form as the target application is tested.
Development of a larger-scale system is more likely to encounter conflicts in which multiple clients update the same part of the same program file, for example. Moreover, an unexpected error may occur at the time of a build due to an unexpected influence of editing by a client, for example. In this way, for a larger-scale system, there is a tendency to have more difficulty in efficiently advancing the entire system development.
Attempts have been made to perform system development in a distributed environment as efficiently as possible. For example, one known system uses an agent process to collect a number of source code lines every time a program is updated by a client. Using this approach, however, only information on the number of source code lines or the like for estimating the size of a program is collected. Thus, detection of whether or not a conflict is occurring in an update of the distributed environment is not possible or contemplated.
Another known approach uses a repository system that acquires design resources referring to a design recourse to be stored. The acquired design resources are then stored in a storage medium. In another approach, a development support system is provided that stores information pieces on updates performed on a program. Relevant information pieces on updates are transmitted to developers when requested. Both of these approaches uses a server to collect, manage, and store information on an update or related development chance. Thus, using either of these approaches, it is not possible to manage an update of a program until suitable information is stored in the server. Thus, situations occurring before a transfer of this information from a client to the server remain problematic and unresolved by either approach.
Further, many aspects of a distributed environment remain problematic to any of the above approaches. For example, in a server managed system, a developer's computer attempts to acquire the most-up-to-date source code from a server. In some cases, the client may subsequently run a test of the source code before utilizing it. A client computer is unable, however, to acquire source code being edited by a third party, which is a common situation in a distributed development environment. Thus, the text may be run on source code with is not the most current. Thus, versioning problems resulting from concurrent access to a set of development products exist.
A check-in/check-out version control system (or document management system) can be used to prevent or minimize versioning problems. That is, a lock can be imposed on a program file before it is updated to disallow a third party from editing the file. When this occurs, other developers (plus the third party) will not be able to edit the locked program file, until the lock is released. This can cause a wait state or bottle-neck, which hampers efficiencies of a distributed development environment. This is especially the case, when developers inadvertently forget to release a program lock, or to check a “checked out” file back in to a document management system.
Similar (and more troubling) problem can arise in updating files in a distributed environment due to inter file dependencies. Specifically, when an update to be performed is influenced by an update of a file by a third party (or other developer), update issues emerge. For example, if a document in a structured language (such as HTML or XML, is created in a distributed environment, conflict may occur in the document editing. This type of problem is not resolved by use of a document management system, as a change in one file produces a set of side-effects, which causes other files to be negatively affected.